home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / MATH / SHUFFLE.ZIP / SHUFFLE.C next >
C/C++ Source or Header  |  1991-01-12  |  1KB  |  57 lines

  1. /* SHUFFLE randomizes a range of numbers between lower and higher  */
  2.  
  3. #include <time.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <bios.h>
  7.  
  8. #define SIZE 10000
  9. #define FOR_X(max) for(x=0;x<max;x++)
  10. #define getrandom(min, max) ((rand() % (int)((max) - (min))) + (min) + 1)
  11.  
  12. int array[SIZE];
  13.  
  14. void main (int argc, char *argv[])
  15. {
  16.     int x, y = 0, num, count, lower, upper;
  17.  
  18.     lower = atoi(argv[1]);
  19.     upper = atoi(argv[2]);
  20.    if(lower >= upper)
  21.       {
  22.         puts("SHUFFLE randomizes a range of numbers specified as lower and upper");
  23.         puts("Syntax: SHUFFLE lower upper");
  24.         puts("Maximum range is 10,000 ");
  25.         exit(1);
  26.       }
  27.     count = upper - lower + 1;
  28.  
  29.     FOR_X(count)
  30.         {
  31.         array[x + 1] = lower++;
  32.         }
  33.  
  34.     srand((unsigned)time(NULL));
  35.     puts("Hit any key to ABORT.");
  36.     for(x = count; (x > 0) & (_bios_keybrd(_KEYBRD_READY) == 0); x--)
  37.         {
  38.         num = getrandom(0, x);
  39.         printf("%5i ", array[num]);
  40.         array[num] = array[x];
  41.         if(y++ == 12)
  42.             {
  43.             printf("\n");
  44.             y = 0;
  45.             }
  46.         }
  47.    exit(0);
  48. }
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.